(deftemplate culoarePantaloni (slot persoana) (slot culoare))
(deftemplate pozitie (slot persoana) (slot x))
(foreach ?nume (create$ Mutu Radoi Nicolita Chivu)
	(foreach ?i (create$ 1 2 3 4)
		(assert (pozitie (persoana ?nume)(x ?i)))
	)
)
(foreach ?nume (create$ Mutu Radoi Nicolita Chivu)
	(foreach ?culoare (create$ Rosu Albastru Verde Oranj)
		(assert (culoarePantaloni (persoana ?nume)(culoare ?culoare)))
	)
)
(assert (culoarePantaloni(persoana Mario)(culoare violet)))
(facts)
(defrule rezolvare
	(pozitie (persoana Mutu)(x ?p1))
	(culoarePantaloni (persoana Mutu)(culoare ?c1))
	(pozitie (persoana ?n & ~Mutu)(x ?p & : (eq ?p (+ ?p1 1))))
	(culoarePantaloni (persoana ?n & ~Mutu)(culoare Albastru & ~?c1))
	(pozitie (persoana Radoi)(x ?p2 & 2 & ~?p1))
	(culoarePantaloni (persoana Radoi)(culoare ?c2 & ~?c1))
	(pozitie (persoana Nicolita & ~?n)(x ?p3 & ~?p1 & ~?p & ~?p2 ))
	(culoarePantaloni (persoana Nicolita & ~?n)(culoare ?c3 & Verde & ~?c1 & ~?c2))
	(pozitie (persoana Chivu & ?n)(x ?p4 & ~1 & ~4 & ~?p1 & ~?p2 & ~?p3))
	(culoarePantaloni (persoana Chivu)(culoare ?c4 & ~Oranj & ~?c1 & ~?c2 & ~?c3))
	=>
	(printout t "Mutu pozitie = " ?p1 " culoare= " ?c1 crlf)
	(printout t "Radoi pozitie = " ?p2 " culoare= " ?c2 crlf)
	(printout t "Nicolita pozitie = " ?p3 " culoare= " ?c3 crlf)
	(printout t "Chivu pozitie = " ?p4 " culoare= " ?c4 crlf crlf)
)
(run)